package com.yg.entity.readAndWriteTemplates;

import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.format.DateTimeFormat;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.util.Date;

/**
 * 数据库导入Teacher类
 */
@Data
@EqualsAndHashCode(callSuper = false)
@ApiModel(value="Teacher对象", description="对应sheet01和其他表，此表为教师表")
public class TeacherRead {
    private static final long serialVersionUID = 1L;

    @ApiModelProperty(value = "序号")
    @ExcelProperty("序号")
    private int num;

    @ApiModelProperty(value = "教师id")
    @TableId(value = "id", type = IdType.ID_WORKER_STR)
    @ExcelIgnore
    @TableField(fill = FieldFill.INSERT)
    private String id;

    @ApiModelProperty(value = "教师的教职号")
    @ExcelProperty("教师教职号")
    private String teacherId;

    @ApiModelProperty(value = "权限")
    @ExcelIgnore
    private String vip;

    @ApiModelProperty(value = "密码，UUID加密")
    @ExcelIgnore
    private String password;

    @ApiModelProperty(value = "教师姓名")
    @ExcelProperty("姓名")
    private String name;

    @ApiModelProperty(value = "教师性别")
    @ExcelProperty("性别")
    private String sex;

    @ApiModelProperty(value = "教师生日")
    @DateTimeFormat("yyyy-MM-dd")
    @ExcelProperty("出生日期")
    private String birthday;

    @ApiModelProperty(value = "教师年龄")
    private Integer age;

    //原密码
    private String oldPwd;

    @ApiModelProperty(value = "教师教龄")
    private Integer seniority;

    @ApiModelProperty(value = "教师来校工作时间")
    @ExcelProperty("来校工作时间")
    private String workTime;

    @ApiModelProperty(value = "教师职称，对应字典表")
    @ExcelProperty("职称")
    private String title;

    @ApiModelProperty(value = "教师专业技术岗位，对应字典表")
    @ExcelProperty("专业技术岗位")
    private String technicalPositions;

    @ApiModelProperty(value = "最高学历，参考字典表")
    @ExcelProperty(value = "最高学历")
    private String education;

    @ApiModelProperty(value = "最高学位，参考字典表")
    @ExcelProperty(value = "最高学位")
    private String degree;

    @ApiModelProperty(value = "最高学位获得时间")
    @ExcelProperty(value = "最高学位获得时间")
    @DateTimeFormat("yyyy-MM-dd")
    private String degreeTime;

    @ApiModelProperty(value = "最高学位获得单位")
    @ExcelProperty(value = "最高学位获得单位")
    private String degreeUnit;

    @ApiModelProperty(value = "最后专业或研究方向")
    @ExcelProperty(value = "最后专业或研究方向")
    private String professional;

    @ApiModelProperty(value = "教师学术头衔")
    @ExcelProperty("学术头衔")
    private String academicTitle;

    @ApiModelProperty(value = "教师荣誉称号")
    @ExcelProperty("荣誉称号")
    private String titleHonor;

    @ApiModelProperty(value = "教师是否为双师型，是：1，否：0")
    @ExcelProperty("是否双师型")
    private String whetherDouble;

    @ApiModelProperty(value = "研究生导师类型，对应字典表")
    @ExcelProperty("研究生导师类型")
    private String postgraduateType;

    @ApiModelProperty(value = "人才引进时间")
    @ExcelProperty("人才引进时间")
    @DateTimeFormat("yyyy-MM-dd")
    private String talentIntroductionTime;

    @ApiModelProperty(value = "校内人才认定层次，对应字典表")
    @ExcelProperty("校内人才认定层次")
    private String schoolTalentLevel;

    @ApiModelProperty(value = "是否海外留学或访学")
    @ExcelProperty("是否海外留学或访学")
    private String whetherStudyAbroad;

    @ApiModelProperty(value = "留学国家及单位")
    @ExcelProperty("留(访)学国家及单位")
    private String studyInUnit;

    @ApiModelProperty(value = "留学开始时间")
    @ExcelProperty("留(访)学开始时间")
    @DateTimeFormat("yyyy-MM-dd")
    private String startStudy;

    @ApiModelProperty(value = "留学结束时间")
    @ExcelProperty("留(访)学结束时间")
    @DateTimeFormat("yyyy-MM-dd")
    private String endStudy;

    @ApiModelProperty(value = "创建时间")
    @TableField(fill = FieldFill.INSERT)
    private Date gmtCreate;

    @ApiModelProperty(value = "修改时间")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Date gmtModified;
}
